<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>UDT Reference</title>
</head>

<body>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber1" bgcolor="#99CCFF" bordercolor="#99CCFF">
  <tr>
    <td width="100%"><font face="Verdana" size="2"><i>&nbsp;UDT Frequent Asked Questions</i></font></td>
  </tr>
</table>
<h1><font size="4" face="Verdana">Frequent Asked Questions</font></h1>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#1">1. What 
is UDT?</a></font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#2">2. Who 
developed UDT?</a></font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#3">3. Why do I need UDT?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#4">4. My application uses UDT, can I run it over a traditional low 
bandwidth network, or even on the public Internet?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#3">
<font face="Verdana" size="2">5</font></a><font face="Verdana" size="2"><a href="#5">. Why can't I reach the expected high throughput with Gigabit 
NIC?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#5">
<font face="Verdana" size="2">6</font></a><font face="Verdana" size="2"><a href="#6">. Can you give me some hints in tuning the performance?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#7">
<font face="Verdana" size="2">7</font></a><font face="Verdana" size="2"><a href="#7">. 
I use UDT for file transfer, but it seems significantly slower than 
memory-memory transfer. Why?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#8">
<font face="Verdana" size="2">8</font></a><font face="Verdana" size="2"><a href="#8">. 
When I run the example applications, it prompts for missing library error. What 
happens?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#9">
<font face="Verdana" size="2">9</font></a><font face="Verdana" size="2"><a href="#9">. Does UDT care about the byte order conversion between different 
platforms?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#10">
<font face="Verdana" size="2">10</font></a><font face="Verdana" size="2"><a href="#10">. Why can't the UDT connection be set up? Why listen or connect 
call fails?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><a href="#11">
<font face="Verdana" size="2">11</font></a><font face="Verdana" size="2"><a href="#11">. Is the UDT connection secure?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#12">12. Why does my application often have packet loss even though the throughput 
is much lower than the available bandwidth?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#13">13. Is UDT TCP friendly?</a></font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#14">14. What copyright and 
license issues shall I be aware of when using UDT? </a> </font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#15">15. Is UDT only suitable for bulk data?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#16">16. What's the relationship between UDT and SABUL?</a></font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#17">17. Where can I find help regarding to the use of UDT library?</a></font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
<a href="#18">18. What background knowledge is necessary in 
order to use UDT?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2"><a href="#19">19.
Why UDT consumes so much memory even if I just send a small file?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2"><a href="#20">20.
When I try to start the example application, an error of &quot;No buffer space
available&quot; occurs, what happened?</a></font></p>

<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>

<hr>
<h4><font face="Verdana" size="2"><a name="1"></a>1. What is UDT?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">UDT 
Stands for UDP-based Data Transfer. It can refer to both the UDT protocol and 
its implementation (the UDT library). Basically, UDT is built on top of UDP by 
adding reliability control and congestion control.</font></p>
<h4><font face="Verdana" size="2"><a name="2"></a>2. Who developed UDT?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">UDT is 
a research product of the National Center for Data Mining (NCDM) at the 
University of Illinois at Chicago. The project was supported in part by US 
National Science Foundation, US Department of Energy, and US Army.</font></p>
<h4><font face="Verdana" size="2"><a name="3"></a>3. Why and when do I need UDT?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">The 
original (and major) purpose of UDT is to provide a high performance transfer interface to 
distributed data 
intensive applications over a wide area network, where TCP seldom works well for 
efficiency and fairness reasons. It can also be used in other situation where 
TCP is not suitable (e.g., multimedia streaming, firewall punching, partial 
reliability, etc.)<br>
<br>
There is no explicit standard to determine when to use UDT or when not to. 
Generally speaking, if you are not satisfied with TCP's performance or 
functionality, UDT is 
probably what you need, especially in high speed networks where a small number of bulk sources share the abundant bandwidth.</font></p>
<h4><font face="Verdana" size="2"><a name="4"></a>4. My application uses UDT, 
can I run it over a traditional low bandwidth network, or even on the public Internet?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
Yes, you can do it. But please be aware that your application may use
a large amount of bandwidth and may be regarded as attack or improper use of network by ISPs and firewalls.
In addition, UDT's impact on the Internet is not comprehensively tested yet.</font></p>
<h4><font face="Verdana" size="2"><a name="5"></a>5. Why can't I reach the announced high throughput with my Gigabit NIC?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">There 
are many factors that can affect the throughput, especially for Gigabit NICs.<br>
<br>
First of all, you need to test it using some other benchmark tools like IPerf. They will give you 
the highest performance for the current configuration. If UDT has 
similar performance, then it is all right, and you need to tune your network 
settings.<br>
<br>
If UDT's performance is much lower than the performance obtained from the benchmark, 
try to modify the UDT options.<br>
<br>
Finally, your applications affect the transfer speed. Any data 
intensive applications can cost substantial CPU time in computing and memory 
replication, which will affect UDT's performance. Try to test the throughput 
with the example applications in the UDT SDK.</font></p>
<h4><font face="Verdana" size="2"><a name="6"></a>6. Can you give me some hints 
in tuning the performance?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">Please 
read the Configuration section of the UDT Tutorial for the answer. The default parameter 
should work fine for most cases.&nbsp; </font></p>
<h4><font face="Verdana" size="2"><a name="7"></a>7. I use UDT for file 
transfer, but it seems significantly slower than memory-memory transfer. Why?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
Performance of file transfer is often limited by the bottleneck speed of disk 
IO. Besides, disk IO is often bursting and cause difficulties for the congestion 
control of transport protocols. UDT has been thoroughly tested for the disk-disk 
transfer scenario. Try to use some benchmark software to test your disk 
performance.</font></p>
<h4><font face="Verdana" size="2"><a name="8"></a>8. When I run the example 
applications, it prompts for missing library error. What happens?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">You 
forget to set the system environment of library path. On Linux/BSD/UNIX, use 
&quot;export&quot; or &quot;setenv&quot; to configure the LD_LIBRARY_PATH environment variable so 
that it contains the directory having the libudt.so file. On Windows, copy 
udt.dll file to the same directory containing you UDT applications (this usually also 
works for Linux/BSD/UNIX by copying libudt.so to the current working directory).</font></p>
<h4><font face="Verdana" size="2"><a name="9"></a>9. Does UDT care about the 
byte order conversion between different platforms?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">No, the 
application should care about the conversion itself. However, UDT does work between 
different platforms even with different byte orders.</font></p>
<h4><font face="Verdana" size="2"><a name="10"></a>10. Why can't the UDT connection 
be set up? Why is the listen or connect call fails?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">The 
most likely reason is that one of the machines is behind a firewall. You can
change the firewall settings if you have the privilege or do something in the
UDT program to bypass the firewall. Note that UDT has same semantics as TCP and
generates UDP traffic in both directions. UDT3 also provides rendezvous 
connection setup in order to punch firewalls.</font></p>
<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">Another
reason is that at least one of the server or client sides has 
multiple addresses, and UDT is bound to an address different from what you use 
in the application. To solve the problem, explicitly set the IP address in bind 
call.<br>
<br>
There can be other reasons, such as domain name lookup failure. Try to use an 
explicit IP address if possible.</font></p>
<h4><font face="Verdana" size="2"><a name="11"></a>11. Is UDT connection secure?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">No. If 
you need a secure connection, you should add other mechanisms on the top of UDT in 
your 
application.</font></p>
<h4><font face="Verdana" size="2"><a name="12"></a>12. Why does my application often 
have packet loss even the throughput is much lower than the available bandwidth?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">Packet 
loss can be caused by a busy receiver. For example, if there is large block 
memory copy, arriving packets will be dropped because the CPU does not have enough time to 
process them. Try to avoid large block copy during data receiving and try to use 
blocking receiving to alleviate the problem.</font></p>
<h4><font face="Verdana" size="2"><a name="13"></a>13. Is UDT TCP friendly?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">TCP 
friendliness is an obscure concept. Please refer to UDT technical reports for 
detailed information on the competition between UDT flows and TCP flows.</font></p>
<h4><font face="Verdana" size="2"><a name="14"></a>14. What copyright and 
license issues shall I be aware of when using UDT? </font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">The UDT 
library developed by us is copyrighted to the board of trustees of the 
University of Illinois at Chicago and is published as open source software under 
Lesser GPL (LGPL). You can find a copy of LGPL within the UDT release. If you 
want to use UDT in commercial products and are not comfortable with LGPL, you 
should contact us to discuss the license issue in a case by case basis.</font></p>
<h4><font face="Verdana" size="2"><a name="15"></a>15. Is UDT only suitable for 
bulk data?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">No, UDT 
can transfer a data buffer from one single byte to multiple tera-bytes, as 
long as your system can provide enough resources. However, UDT is indeed
optimized for bulk data, and it may not have any better performance for message
signaling applications.</font></p>
<h4><font face="Verdana" size="2"><a name="16"></a>16. What's the relationship 
between UDT and SABUL?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">UDT 
is the successor of SABUL. It removes the TCP connection from SABUL and enhances the congestion/flow control.</font></p>

<h4><font face="Verdana" size="2">
<a name="17"></a>17. Where can I find help regarding to the use of UDT library?</font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">If you 
cannot find answers in this documentation,</font><font face="Verdana" size="2"> please go to the UDT home at 
sourceforge.net and post your questions. In order to help more users easily find 
answers about UDT usage and help increase the activity of this project, please 
post all general questions to the
<a target="_blank" href="http://sourceforge.net/forum/forum.php?forum_id=393037">
souceforge forum</a> or send them to the
<a href="http://sourceforge.net/mail/?group_id=115059">sourceforge mailing list</a>. The mailing list and the forum is monitored by the UDT 
developer and your questions will be replied as soon as possible.</font></p>
<h4><font face="Verdana" size="2"><a name="18"></a>18. What background knowledge is necessary in 
order to use UDT? </font></h4>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
Knowledge on socket programming and C++ is necessary. Knowledge on TCP is a 
plus.</font></p>

<h4><font face="Verdana" size="2"><a name="19"></a>Why UDT consumes so much
memory even if I just send a small file?</font></h4>

<p><font face="Verdana" size="2">Because UDT was originally designed for transferring
very large dataset over high speed long distance networks, the default buffer
size is set to 20MB, just enough for most bandwidth-delay product in these environments.
You can, however, use &quot;setsockopt&quot; to set a smaller buffer size should
your application works only in relatively low bandwidth (&lt;10Mb/s) environments.</font></p>
<h4><font face="Verdana" size="2"><a name="20"></a>When I try to start the
example application, an error of &quot;No buffer space available&quot; occurs,
what happened?</font></h4>
<p>This error usually happens on BSD systems. The default maximum socket buffer
size on BSD systems is usually much smaller that the default UDT socket buffer
size. To eliminate this error, either use &quot;setsockopt&quot; to set a
smaller UDT buffer size, or change the default OS value to a larger one.</p>

</body>

</html>
